﻿using System;
using System.ComponentModel;
using Jay.Sc2.Bof.Lib.State;

namespace Jay.Sc2.Bof.Windows
{
	public class ProtossStateProxy : StateProxy
	{
		private ProtossState m_State;
		[Browsable(false)]
		public override IState State { get { return m_State; } }
		public ProtossStateProxy(ProtossState state) { m_State = state; }
		[CategoryAttribute("Goal")]
		public override TimeSpan Time { get { return new TimeSpan(0, 0, m_State.Time); } set { m_State.Time = (int)(value.TotalSeconds); } }
		[CategoryAttribute("Informations")]
		public override int Food { get { return m_State.Food; } }
		[CategoryAttribute("Informations")]
		public int Army { get { return m_State.Army; } }
		[CategoryAttribute("Informations")]
		public override int Supply { get { return m_State.Supply; } }
		[CategoryAttribute("Informations")]
		public override int MineralsIncome { get { return m_State.MineralsIncome; } }
		[CategoryAttribute("Informations")]
		public override int WorkersOnMinerals { get { return m_State.WorkersOnMinerals; } }
		[CategoryAttribute("Informations")]
		public override int WorkersOnGas { get { return m_State.WorkersOnGas; } }
		[CategoryAttribute("Informations")]
		public override int GasIncome { get { return m_State.GasIncome; } }
		[CategoryAttribute("Worker")]
		public int Probe { get { return m_State.Probe; } set { m_State.Probe = value; } }
		[CategoryAttribute("Unit")]
		public int Zealot { get { return m_State.Zealot; } set { m_State.Zealot = value; } }
		[CategoryAttribute("Unit")]
		public int Stalker { get { return m_State.Stalker; } set { m_State.Stalker = value; } }
		[CategoryAttribute("Unit")]
		public int Archon { get { return m_State.Archon; } set { m_State.Archon = value; } }
		[CategoryAttribute("Structure")]
		public int Assimilator { get { return m_State.Assimilator.Count; } set { m_State.Assimilator.Count = value; } }
		[CategoryAttribute("Unit")]
		public int Carrier { get { return m_State.Carrier; } set { m_State.Carrier = value; } }
		[CategoryAttribute("Unit")]
		public int Phoenix { get { return m_State.Phoenix; } set { m_State.Phoenix = value; } }
		[CategoryAttribute("Goal")]
		public override int Minerals { get { return (int)m_State.Minerals; } set { m_State.Minerals = value; } }
		[CategoryAttribute("Goal")]
		public override int Gas { get { return (int)m_State.Gas; } set { m_State.Gas = value; } }
		[CategoryAttribute("Structure")]
		public int Pylon { get { return (int)m_State.Pylon.Count; } set { m_State.Pylon.Count = value; } }
		[CategoryAttribute("Unit")]
		public int Colossus { get { return m_State.Colossus; } set { m_State.Colossus = value; } }
		[CategoryAttribute("Structure")]
		public int Gateway { get { return m_State.Gateway.Count; } set { m_State.Gateway.Count = value; } }
		[CategoryAttribute("Structure")]
		public int WarpGate { get { return m_State.WarpGate.Count; } set { m_State.WarpGate.Count = value; } }
		[CategoryAttribute("Structure")]
		public int Nexus { get { return m_State.Nexus.Count; } set { m_State.Nexus.Count = value; } }
		[CategoryAttribute("Unit")]
		public int Sentry { get { return m_State.Sentry; } set { m_State.Sentry = value; } }
		[CategoryAttribute("Unit")]
		public int VoidRay { get { return m_State.VoidRay; } set { m_State.VoidRay = value; } }
		[CategoryAttribute("Structure")]
		public int CyberneticsCore { get { return m_State.CyberneticsCore.Count; } set { m_State.CyberneticsCore.Count = value; } }
		[CategoryAttribute("Structure")]
		public int DarkShrine { get { return m_State.DarkShrine.Count; } set { m_State.DarkShrine.Count = value; } }
		[CategoryAttribute("Structure")]
		public int FleetBeacon { get { return m_State.FleetBeacon.Count; } set { m_State.FleetBeacon.Count = value; } }
		[CategoryAttribute("Structure")]
		public int Forge { get { return m_State.Forge.Count; } set { m_State.Forge.Count = value; } }
		[CategoryAttribute("Structure")]
		public int PhotonCannon { get { return m_State.PhotonCannon.Count; } set { m_State.PhotonCannon.Count = value; } }
		[CategoryAttribute("Structure")]
		public int RoboticsBay { get { return m_State.RoboticsBay.Count; } set { m_State.RoboticsBay.Count = value; } }
		[CategoryAttribute("Structure")]
		public int RoboticsFacility { get { return m_State.RoboticsFacility.Count; } set { m_State.RoboticsFacility.Count = value; } }
		[CategoryAttribute("Structure")]
		public int Stargate { get { return m_State.Stargate.Count; } set { m_State.Stargate.Count = value; } }
		[CategoryAttribute("Structure")]
		public int TemplarArchives { get { return m_State.TemplarArchives.Count; } set { m_State.TemplarArchives.Count = value; } }
		[CategoryAttribute("Structure")]
		public int TwilightCouncil { get { return m_State.TwilightCouncil.Count; } set { m_State.TwilightCouncil.Count = value; } }
		[CategoryAttribute("Unit")]
		public int HighTemplar { get { return m_State.HighTemplar; } set { m_State.HighTemplar = value; } }
		[CategoryAttribute("Unit")]
		public int DarkTemplar { get { return m_State.DarkTemplar; } set { m_State.DarkTemplar = value; } }
		[CategoryAttribute("Unit")]
		public int WarpPrism { get { return m_State.WarpPrism; } set { m_State.WarpPrism = value; } }
		[CategoryAttribute("Unit")]
		public int Immortal { get { return m_State.Immortal; } set { m_State.Immortal = value; } }
		[CategoryAttribute("Unit")]
		public int Observer { get { return m_State.Observer; } set { m_State.Observer = value; } }
		[CategoryAttribute("Unit")]
		public int Mothership { get { return m_State.Mothership; } set { m_State.Mothership = value; } }
		[CategoryAttribute("Upgrade")]
		public bool GatewayToWarpGate { get { return m_State.GatewayToWarpGate.Available; } set { m_State.GatewayToWarpGate.Available = value; } }
		//[CategoryAttribute("Upgrade")]
		//public bool DurableMaterials { get { return m_State.DurableMaterials.Available; } set { m_State.DurableMaterials.Available = value; } }
		//[CategoryAttribute("Structure")]
		//public int GhostAcademy { get { return m_State.GhostAcademy.Count; } set { m_State.GhostAcademy.Count = value; } }
		//[CategoryAttribute("Upgrade")]
		//public bool HiSecAutoTracking { get { return m_State.HiSecAutoTracking.Available; } set { m_State.HiSecAutoTracking.Available = value; } }
		//[CategoryAttribute("Upgrade")]
		//public bool InfantryArmor1 { get { return m_State.InfantryArmor1.Available; } set { m_State.InfantryArmor1.Available = value; } }
		//[CategoryAttribute("Upgrade")]
		//public bool InfantryArmor2 { get { return m_State.InfantryArmor2.Available; } set { m_State.InfantryArmor2.Available = value; } }
		//[CategoryAttribute("Upgrade")]
		//public bool InfantryArmor3 { get { return m_State.InfantryArmor3.Available; } set { m_State.InfantryArmor3.Available = value; } }
		//[CategoryAttribute("Upgrade")]
		//public bool InfantryWeapons1 { get { return m_State.InfantryWeapons1.Available; } set { m_State.InfantryWeapons1.Available = value; } }
		//[CategoryAttribute("Upgrade")]
		//public bool InfantryWeapons2 { get { return m_State.InfantryWeapons2.Available; } set { m_State.InfantryWeapons2.Available = value; } }
		//[CategoryAttribute("Upgrade")]
		//public bool InfantryWeapons3 { get { return m_State.InfantryWeapons3.Available; } set { m_State.InfantryWeapons3.Available = value; } }
		//[CategoryAttribute("Upgrade")]
		//public bool InfernalPreIgniter { get { return m_State.InfernalPreIgniter.Available; } set { m_State.InfernalPreIgniter.Available = value; } }
		//[CategoryAttribute("Structure")]
		//public int MissileTurret { get { return m_State.MissileTurret.Count; } set { m_State.MissileTurret.Count = value; } }
		//[CategoryAttribute("Upgrade")]
		//public bool MoebiusReactor { get { return m_State.MoebiusReactor.Available; } set { m_State.MoebiusReactor.Available = value; } }
		//[CategoryAttribute("Structure")]
		//public int BarracksTechLab { get { return m_State.BarracksTechLab.Count; } set { m_State.BarracksTechLab.Count = value; } }
		//[CategoryAttribute("Upgrade")]
		//public bool BehemothReactor { get { return m_State.BehemothReactor.Available; } set { m_State.BehemothReactor.Available = value; } }
		//[CategoryAttribute("Upgrade")]
		//public bool BuildingArmor { get { return m_State.BuildingArmor.Available; } set { m_State.BuildingArmor.Available = value; } }
		//[CategoryAttribute("Structure")]
		//public int Bunker { get { return m_State.Bunker.Count; } set { m_State.Bunker.Count = value; } }
		//[CategoryAttribute("Upgrade")]
		//public bool CaduceusReactor { get { return m_State.CaduceusReactor.Available; } set { m_State.CaduceusReactor.Available = value; } }
		//[CategoryAttribute("Upgrade")]
		//public bool CloakingField { get { return m_State.CloakingField.Available; } set { m_State.CloakingField.Available = value; } }
		//[CategoryAttribute("Upgrade")]
		//public bool NeosteelFrames { get { return m_State.NeosteelFrames.Available; } set { m_State.NeosteelFrames.Available = value; } }
		//[CategoryAttribute("Upgrade")]
		//public bool NitroPacks { get { return m_State.NitroPacks.Available; } set { m_State.NitroPacks.Available = value; } }
		//[CategoryAttribute("Special")]
		//public int Nuke { get { return m_State.Nuke; } set { m_State.Nuke = value; } }
		//[CategoryAttribute("Upgrade")]
		//public bool PersonalCloaking { get { return m_State.PersonalCloaking.Available; } set { m_State.PersonalCloaking.Available = value; } }
		//[CategoryAttribute("Upgrade")]
		//public bool SeekerMissile { get { return m_State.SeekerMissile.Available; } set { m_State.SeekerMissile.Available = value; } }
		//[CategoryAttribute("Structure")]
		//public int SensorTower { get { return m_State.SensorTower.Count; } set { m_State.SensorTower.Count = value; } }
		//[CategoryAttribute("Upgrade")]
		//public bool ShipPlating1 { get { return m_State.ShipPlating1.Available; } set { m_State.ShipPlating1.Available = value; } }
		//[CategoryAttribute("Upgrade")]
		//public bool ShipPlating2 { get { return m_State.ShipPlating2.Available; } set { m_State.ShipPlating2.Available = value; } }
		//[CategoryAttribute("Upgrade")]
		//public bool ShipPlating3 { get { return m_State.ShipPlating3.Available; } set { m_State.ShipPlating3.Available = value; } }
		//[CategoryAttribute("Upgrade")]
		//public bool ShipWeapons1 { get { return m_State.ShipWeapons1.Available; } set { m_State.ShipWeapons1.Available = value; } }
		//[CategoryAttribute("Upgrade")]
		//public bool ShipWeapons2 { get { return m_State.ShipWeapons2.Available; } set { m_State.ShipWeapons2.Available = value; } }
		//[CategoryAttribute("Upgrade")]
		//public bool ShipWeapons3 { get { return m_State.ShipWeapons3.Available; } set { m_State.ShipWeapons3.Available = value; } }
		//[CategoryAttribute("Upgrade")]
		//public bool StrikeCannon { get { return m_State.StrikeCannon.Available; } set { m_State.StrikeCannon.Available = value; } }
		//[CategoryAttribute("Upgrade")]
		//public bool VehiclePlating1 { get { return m_State.VehiclePlating1.Available; } set { m_State.VehiclePlating1.Available = value; } }
		//[CategoryAttribute("Upgrade")]
		//public bool VehiclePlating2 { get { return m_State.VehiclePlating2.Available; } set { m_State.VehiclePlating2.Available = value; } }
		//[CategoryAttribute("Upgrade")]
		//public bool VehiclePlating3 { get { return m_State.VehiclePlating3.Available; } set { m_State.VehiclePlating3.Available = value; } }
		//[CategoryAttribute("Upgrade")]
		//public bool VehicleWeapons1 { get { return m_State.VehicleWeapons1.Available; } set { m_State.VehicleWeapons1.Available = value; } }
		//[CategoryAttribute("Upgrade")]
		//public bool VehicleWeapons2 { get { return m_State.VehicleWeapons2.Available; } set { m_State.VehicleWeapons2.Available = value; } }
		//[CategoryAttribute("Upgrade")]
		//public bool VehicleWeapons3 { get { return m_State.VehicleWeapons3.Available; } set { m_State.VehicleWeapons3.Available = value; } }
		//[CategoryAttribute("Unit")]
		//public int Viking { get { return m_State.Viking; } set { m_State.Viking = value; } }
		//[CategoryAttribute("Upgrade")]
		//public bool WeaponRefit { get { return m_State.WeaponRefit.Available; } set { m_State.WeaponRefit.Available = value; } }
		//[CategoryAttribute("Upgrade")]
		//public bool SiegeTech { get { return m_State.SiegeTech.Available; } set { m_State.SiegeTech.Available = value; } }
		//[CategoryAttribute("Upgrade")]
		//public bool Stimpack { get { return m_State.Stimpack.Available; } set { m_State.Stimpack.Available = value; } }
		//[CategoryAttribute("Upgrade")]
		//public bool ConcussiveShells { get { return m_State.ConcussiveShells.Available; } set { m_State.ConcussiveShells.Available = value; } }
		//[CategoryAttribute("Upgrade")]
		//public bool CombatShield { get { return m_State.CombatShield.Available; } set { m_State.CombatShield.Available = value; } }

	}

}
